Applicative Style
こういう形式の書き方を「Applicative Style」と呼ぶ
code:hs
pure f <*> m1 <*> m2
code:hs
f <$> m1 <*> m2
理解する際は、前者を見たほうがわかりやすいmrsekut.icon
実際に書く際は、前者の省略版のような形で、後者を使うことが多いmrsekut.icon
関数適用の一般化と捉える
通常の関数適用
f a b c
のApplicative版として
fa <*> ma <*> mb <*> mc
のように書ける
<*>はapplyのエイリアスで、関数をapplyしてる、と読めば意味がわかりやすい
do式を使った書き換え
Applicativeの話なので、Monad (do)は関係ないが、Monadに慣れた人からするとわかりやすいかも知れない
code:hs
foo = do
a <- m1
b <- m2
return $ f a b
参考
applicativeの論文
[| f x1 x2 ... |]
applicative styleの糖衣構文
実用例など
最初の例を実践するためには、Applicativeにする必要はなく、Applyで十分であることがわかるmrsekut.icon